Warning: mkdir(): No space left on device in /var/www/tg-me/post.php on line 37

Warning: file_put_contents(aCache/aDaily/post/golangtests/--): Failed to open stream: No such file or directory in /var/www/tg-me/post.php on line 50
Go tests | Telegram Webview: golangtests/764 -
Telegram Group & Telegram Channel
πŸ‘£ Π—Π°Π΄Π°Ρ‡Π° с ΠΏΠΎΠ΄Π²ΠΎΡ…ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ связан с ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ повСдСния Ρ†ΠΈΠΊΠ»ΠΎΠ², Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌ Π² Go 1.22 (ΠΈ, соотвСтствСнно, Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ для Go 1.24).

Π—Π°Π΄Π°Ρ‡Π°: Π§Ρ‚ΠΎ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΈ компиляции ΠΈ запускС с использованиСм Go 1.24?


package main

import (
"fmt"
"sync"
"time"
)

func main() {
var wg sync.WaitGroup
count := 3

fmt.Println("Запуск Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½...")
wg.Add(count)

for i := 0; i < count; i++ {
// ЗапускаСм Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρƒ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ
go func() {
defer wg.Done()
// Π˜ΠΌΠΈΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ
time.Sleep(time.Duration(10) * time.Millisecond)
// Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ†ΠΈΠΊΠ»Π° 'i' Π²Π½ΡƒΡ‚Ρ€ΠΈ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹
fmt.Printf("Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = %d\n", i)
}()
}

fmt.Println("ОТиданиС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½...")
wg.Wait()
fmt.Println("ВсС Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Ρ‹.")
}



Π Π°Π·Π±ΠΎΡ€:
ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠ°Ρ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° (Π΄ΠΎ Go 1.22): Π’ вСрсиях Go Π΄ΠΎ 1.22 сущСствовала извСстная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с Π·Π°Ρ…Π²Π°Ρ‚ΠΎΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»Π° Π² замыканиях (функциях, создаваСмых Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°, ΠΊΠ°ΠΊ наша анонимная Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π°). ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ i Π±Ρ‹Π»Π° ΠΎΠ΄Π½Π° Π½Π° вСсь Ρ†ΠΈΠΊΠ».

Когда Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ (послС нСбольшой Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ time.Sleep), Ρ†ΠΈΠΊΠ» for, скорСС всСго, ΡƒΠΆΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π»ΡΡ. К этому ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ пСрСмСнная i ΠΈΠΌΠ΅Π»Π° Π±Ρ‹ своС ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС 3, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° i становится Ρ€Π°Π²Π½Ρ‹ΠΌ count).

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² старых вСрсиях Go этот ΠΊΠΎΠ΄, скорСС всСго, Π²Ρ‹Π²Π΅Π» Π±Ρ‹:
Запуск Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½...
ОТиданиС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½...
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 3
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 3
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 3

ВсС Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Ρ‹.

(ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ строк "Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚..." ΠΌΠΎΠ³ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΌ). Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ это, Ρ€Π°Π½ΡŒΡˆΠ΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ: i := i Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° ΠΏΠ΅Ρ€Π΅Π΄ запуском Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ копию ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

НовоС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ (Go 1.22 ΠΈ Π½ΠΎΠ²Π΅Π΅, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ 1.24): Начиная с Go 1.22, сСмантика ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»Π° for Π±Ρ‹Π»Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° для прСдотвращСния этой распространСнной ошибки. Π’Π΅ΠΏΠ΅Ρ€ΡŒ пСрСмСнная Ρ†ΠΈΠΊΠ»Π° (i Π² нашСм случаС) пСрСсоздаСтся для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ каТдая Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π·Π°Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ свою ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ копию i, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ этой ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

ΠžΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ (Go 1.24): Благодаря измСнСнию Π² Go 1.22, каТдая Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π²ΠΈΠ΄ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ i Ρ‚ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½Π° Π±Ρ‹Π»Π° Π·Π°ΠΏΡƒΡ‰Π΅Π½Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Ρ‹Π²ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ (порядок строк "Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚..." ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°Ρ€ΡŒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠ·-Π·Π° Π½Π΅Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ планирования Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½):
Запуск Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½...
ОТиданиС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½...
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 0
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 1
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 2
ВсС Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Ρ‹.
Use code with caution.
Или, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:
Запуск Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½...
ОТиданиС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½...
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 2
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 0
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 1
ВсС Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Ρ‹.


ΠŸΠΎΠ΄Π²ΠΎΡ… Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ выглядит ΠΊΠ°ΠΊ классичСский ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ошибки Π·Π°Ρ…Π²Π°Ρ‚Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»Π°, Π½ΠΎ ΠΈΠ·-Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² языкС начиная с Go 1.22, ΠΎΠ½ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ "ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ" Π±Π΅Π· нСобходимости явного копирования ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (i := i).
Please open Telegram to view this post
VIEW IN TELEGRAM



tg-me.com/golangtests/764
Create:
Last Update:

πŸ‘£ Π—Π°Π΄Π°Ρ‡Π° с ΠΏΠΎΠ΄Π²ΠΎΡ…ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ связан с ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ повСдСния Ρ†ΠΈΠΊΠ»ΠΎΠ², Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌ Π² Go 1.22 (ΠΈ, соотвСтствСнно, Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ для Go 1.24).

Π—Π°Π΄Π°Ρ‡Π°: Π§Ρ‚ΠΎ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΈ компиляции ΠΈ запускС с использованиСм Go 1.24?


package main

import (
"fmt"
"sync"
"time"
)

func main() {
var wg sync.WaitGroup
count := 3

fmt.Println("Запуск Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½...")
wg.Add(count)

for i := 0; i < count; i++ {
// ЗапускаСм Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρƒ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ
go func() {
defer wg.Done()
// Π˜ΠΌΠΈΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ
time.Sleep(time.Duration(10) * time.Millisecond)
// Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ†ΠΈΠΊΠ»Π° 'i' Π²Π½ΡƒΡ‚Ρ€ΠΈ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹
fmt.Printf("Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = %d\n", i)
}()
}

fmt.Println("ОТиданиС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½...")
wg.Wait()
fmt.Println("ВсС Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Ρ‹.")
}



Π Π°Π·Π±ΠΎΡ€:
ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠ°Ρ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° (Π΄ΠΎ Go 1.22): Π’ вСрсиях Go Π΄ΠΎ 1.22 сущСствовала извСстная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с Π·Π°Ρ…Π²Π°Ρ‚ΠΎΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»Π° Π² замыканиях (функциях, создаваСмых Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°, ΠΊΠ°ΠΊ наша анонимная Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π°). ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ i Π±Ρ‹Π»Π° ΠΎΠ΄Π½Π° Π½Π° вСсь Ρ†ΠΈΠΊΠ».

Когда Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ (послС нСбольшой Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ time.Sleep), Ρ†ΠΈΠΊΠ» for, скорСС всСго, ΡƒΠΆΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π»ΡΡ. К этому ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ пСрСмСнная i ΠΈΠΌΠ΅Π»Π° Π±Ρ‹ своС ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС 3, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° i становится Ρ€Π°Π²Π½Ρ‹ΠΌ count).

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² старых вСрсиях Go этот ΠΊΠΎΠ΄, скорСС всСго, Π²Ρ‹Π²Π΅Π» Π±Ρ‹:
Запуск Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½...
ОТиданиС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½...
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 3
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 3
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 3

ВсС Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Ρ‹.

(ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ строк "Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚..." ΠΌΠΎΠ³ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΌ). Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ это, Ρ€Π°Π½ΡŒΡˆΠ΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ: i := i Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° ΠΏΠ΅Ρ€Π΅Π΄ запуском Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ копию ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

НовоС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ (Go 1.22 ΠΈ Π½ΠΎΠ²Π΅Π΅, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ 1.24): Начиная с Go 1.22, сСмантика ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»Π° for Π±Ρ‹Π»Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° для прСдотвращСния этой распространСнной ошибки. Π’Π΅ΠΏΠ΅Ρ€ΡŒ пСрСмСнная Ρ†ΠΈΠΊΠ»Π° (i Π² нашСм случаС) пСрСсоздаСтся для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ каТдая Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π·Π°Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ свою ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ копию i, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ этой ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

ΠžΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ (Go 1.24): Благодаря измСнСнию Π² Go 1.22, каТдая Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π²ΠΈΠ΄ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ i Ρ‚ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½Π° Π±Ρ‹Π»Π° Π·Π°ΠΏΡƒΡ‰Π΅Π½Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Ρ‹Π²ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ (порядок строк "Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚..." ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°Ρ€ΡŒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠ·-Π·Π° Π½Π΅Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ планирования Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½):
Запуск Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½...
ОТиданиС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½...
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 0
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 1
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 2
ВсС Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Ρ‹.
Use code with caution.
Или, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:
Запуск Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½...
ОТиданиС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½...
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 2
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 0
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 1
ВсС Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Ρ‹.


ΠŸΠΎΠ΄Π²ΠΎΡ… Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ выглядит ΠΊΠ°ΠΊ классичСский ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ошибки Π·Π°Ρ…Π²Π°Ρ‚Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»Π°, Π½ΠΎ ΠΈΠ·-Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² языкС начиная с Go 1.22, ΠΎΠ½ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ "ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ" Π±Π΅Π· нСобходимости явного копирования ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (i := i).

BY Go tests


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/golangtests/764

View MORE
Open in Telegram


Go tests Telegram | DID YOU KNOW?

Date: |

For some time, Mr. Durov and a few dozen staffers had no fixed headquarters, but rather traveled the world, setting up shop in one city after another, he told the Journal in 2016. The company now has its operational base in Dubai, though it says it doesn’t keep servers there.Mr. Durov maintains a yearslong friendship from his VK days with actor and tech investor Jared Leto, with whom he shares an ascetic lifestyle that eschews meat and alcohol.

Telegram Auto-Delete Messages in Any Chat

Some messages aren’t supposed to last forever. There are some Telegram groups and conversations where it’s best if messages are automatically deleted in a day or a week. Here’s how to auto-delete messages in any Telegram chat. You can enable the auto-delete feature on a per-chat basis. It works for both one-on-one conversations and group chats. Previously, you needed to use the Secret Chat feature to automatically delete messages after a set time. At the time of writing, you can choose to automatically delete messages after a day or a week. Telegram starts the timer once they are sent, not after they are read. This won’t affect the messages that were sent before enabling the feature.

Go tests from hk


Telegram Go tests
FROM USA